import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)

var state={
  count:1
}
var mutations={
  incCount(){
    ++state.count;
  }
}
/** 
 * getters 的优点类似计算属性
 * 改变state里面的count 数据的时候会触发getters里面的方法 
*/

var  getters={
  computedCount(state){
  return state.count*2
  }
}

/*Action 类似于 mutation，不同在于：

Action 提交的是 mutation，而不是直接变更状态。
Action 可以包含任意异步操作。
*/
var  actions={
  incMutationsCount(context) {/*因此你可以调用 context.commit 提交一个 mutation, 这里是关联mutions这个对象,通过mutions对象的改变store里面的数据，属于间接改变store对象里面的数据*/
    context.commit('incCount');      /*执行 mutations 里面的incCount方法 改变state里面的数据*/
  }
}

const store=new Vuex.Store({
  state,
  mutations,
  getters,
  actions  /**注册 */


})
export  default store   /**暴露 */